package com.mfl.mapper;

import com.github.pagehelper.Page;
import com.mfl.pojo.dto.PostPageQueryDTO;
import com.mfl.pojo.entity.Post;
import com.mfl.pojo.vo.PostPageQueryVO;
import com.mfl.pojo.vo.PostVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface PostMapper {
    /**
     * 分页查询帖子
     * @param pageQueryDTO
     * @return
     */
    Page<PostPageQueryVO> pageQuery(PostPageQueryDTO pageQueryDTO);

    /**
     * 根据帖子标题查询帖子
     * @param postTitle
     * @return
     */
    @Select("select * from post where post_title = #{postTitle}")
    Post selectByPostTitle(String postTitle);

    /**
     * 插入帖子
     * @param post
     */
    void insert(Post post);

    /**
     * 根据id批量删除帖子
     * @param ids
     */
    void deleteByIds(List<Integer> ids);

    /**
     * 根据id查询帖子
     * @param id
     * @return
     */
    @Select("select * from post where id = #{id}")
    Post getPostById(int id);

    /**
     * 更新帖子
     * @param post
     */
    void update(Post post);

    /**
     * 分页查询最新帖子
     * @param postPageQueryDTO
     * @return
     */
    Page<PostPageQueryVO> pageQueryLately(PostPageQueryDTO postPageQueryDTO);

    /**
     * 分页查询三天内帖子
     * @param pageQueryDTO
     * @return
     */
    Page<PostPageQueryVO> queryThreeDaysAgoPost(PostPageQueryDTO pageQueryDTO);

    /**
     * 根据用户id批量删除帖子
     * @param ids
     */
    void deleteByUserIds(List<Integer> ids);

    /**
     * 根据用户id批量查询帖子id
     * @param ids
     * @return
     */
    List<Integer> getIdByCreateUser(List<Integer> ids);

    /**
     * 分页查询用户帖子
     * @param postPageQueryDTO
     * @return
     */
    Page<PostPageQueryVO> pageQueryUserPost(PostPageQueryDTO postPageQueryDTO);
}
